package com.yf.service;

import com.yf.entity.UserEntity;
import com.yf.entity.WxUser;

import java.util.List;

/**
 * 用户Service接口
 *
 * @author hxf
 * @email 505860922@qq.com
 * @date Thu Aug 16 13:36:44 CST 2018
 */
public interface UserService extends BaseService<UserEntity>{


    /**前端接口**/

    /**
     * 验证用户是否登录
     * @return
     */
    void validateLogin(UserEntity userEntity);

    /**
     * 通过统一ID获取
     * @return
     */
    UserEntity findByUnionId(String unionId);

    /**
     * 通过单独ID获取
     * @return
     */
    UserEntity findByOpenid(String openId);

    /**
     * 通过用户查找
     * @param phone
     * @return
     */
    UserEntity findByPhone(String phone);


    /**
     * 绑定微信，通过ID绑定上级
     * @param code
     * @param parentId
     * @return
     */
    UserEntity registerVistor(WxUser wxUser, Long parentId);


    /**
     * 绑定微信，通过手机号码绑定上级
     * @param phone
     * @return
     */
    UserEntity registerVistor(WxUser wxUser, String phone);

    /**
     * 完善用户信息
     * @param userEntity 填写需要的资料
     * @return
     */
    UserEntity completeUserInfo(UserEntity userEntity);


    /**
     * 修改用户信息
     * @param userEntity  需要修改的字段
     * @return
     */
    UserEntity updateUserInfo(UserEntity userEntity);

    /**
     * 查找所有下级
     * @return
     */
    List<UserEntity> findDownByTree(UserEntity userEntity);

    /**
     * 查找直接下级
     * @param userEntity
     * @return
     */
    List<UserEntity> findDown(UserEntity userEntity);

    /**
     * 查找所有上级
     * @return
     */
    List<UserEntity> findUpByTree(UserEntity userEntity);

    /**
     *
     * @param parent
     */
    void updateParent(UserEntity user,UserEntity parent);




    /**
     * 创建基本树用户
     * @param parentId
     * @return
     */
    UserEntity createTreeUser(UserEntity parent);



}
